%!TEX program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass[10pt,a4paper]{article} 

\usepackage{ctex} % 中文支持
\usepackage[top=2.5cm, bottom=2.5cm, left=2.5cm, right=2.5cm]{geometry} % 页边距
\usepackage{amsmath, amssymb} % 数学公式与符号
\usepackage{graphicx}
\usepackage{pythonhighlight}
\usepackage{url} 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikz} % 用于绘图
\usetikzlibrary{shapes,arrows,graphs}
\usetikzlibrary{arrows.meta}  % 加载这个库来使用Stealth
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{array} % 使表格美观
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
%\newcolumntype{N}{@{}m{0pt}@{}}
\setlength\extrarowheight{3pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{titling}
\setlength{\droptitle}{-2cm} % 标题上移

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%文档的题目、作者与日期
\author{五六七 }
\title{莱斯利种群模型 }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle

\begin{abstract}
种群不同年龄段的数量随着时间的变化规律。
\end{abstract}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\setcounter{tocdepth}{2}
%\renewcommand\contentsname{目录}
%
%\renewcommand {\baselinestretch} {1.3}\normalsize 
%\tableofcontents 
%\renewcommand {\baselinestretch} {1.0}\normalsize


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{问题描述}
设某个动物种群的最大生存年龄为15年。按5年为间隔，将这个种群分成三组，分别是 0-5岁，5-10岁和10-15岁。
设初始时刻，这三个年龄组的动物数量分别为 500, 1000 和 500. 
设着三个年龄组的动物在5年内的繁殖率分别为 0, 4 和 3. 
设第一组到第二组、第二组到第三组的存活率分别是 0.5 和 0.25. 
求这三个年龄组的动物数量随着时间的演化规律。


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{建立模型}
这里是每5年进行一次种群数量的计算。设自然数 $t=0,1,2,\cdots$. 
设在第 $5t$ 年的时候，第 $k$ 组的动物数量为 $x(k,t)$, 其中 $k=1,2,3$. 
则由题目可得初始值为 
\begin{eqnarray}
\left\{\begin{array}{rcl}
x(1,0) &=& 500, \\ 
x(2,0) &=& 1000, \\ 
x(3,0) &=& 500. 
\end{array}\right. 
\end{eqnarray}
根据题目所给的假设条件，每过5年，考虑繁殖率与存活率，三组数量的演化规律是
\begin{eqnarray}
\left\{\begin{array}{rcl}
x(1,t+1) &=& 4x(2,t) + 3x(3,t), \\ 
x(2,t+1) &=& 0.5x(1,t), \\ 
x(3,t+1) &=& 0.25x(2,t). 
\end{array}\right. 
\end{eqnarray}
写成矩阵形式，可得
\begin{eqnarray}
\begin{pmatrix} x(1,t+1)  \\ x(2,t+1) \\ x(3,t+1) \end{pmatrix}
=\begin{pmatrix} 0&4&3 \\  0.5 &0 & 0 \\ 0 & 0.25 & 0  \end{pmatrix}
\begin{pmatrix} x(1,t)  \\ x(2,t) \\ x(3,t) \end{pmatrix}.
\end{eqnarray}
于是可得第 $5t$ 年时候的数量与初始年份的数量的关系为
\begin{eqnarray}
\begin{pmatrix} x(1,t)  \\ x(2,t) \\ x(3,t) \end{pmatrix}
=\begin{pmatrix} 0&4&3 \\  0.5 &0 & 0 \\ 0 & 0.25 & 0  \end{pmatrix}^n
\begin{pmatrix} x(1,0)  \\ x(2,0) \\ x(3,0) \end{pmatrix}
=\begin{pmatrix} 0&4&3 \\  0.5 &0 & 0 \\ 0 & 0.25 & 0  \end{pmatrix}^n
\begin{pmatrix} 500  \\ 1000 \\ 500 \end{pmatrix}.
\end{eqnarray}

为计算矩阵 $A$ 的 $n$ 次幂 $A^n$, 可以先将矩阵 $A$ 对角化，即找到可逆矩阵 $P$, 使得 $P^{-1}AP=B$ 为对角阵。
根据矩阵乘法的结合律，可得  
\begin{eqnarray}
A^n= (PBP^{-1})^n = (PBP^{-1})(PBP^{-1})\cdots (PBP^{-1}) = PB^nP^{-1}. 
\end{eqnarray}
因为矩阵 $B$ 是对角阵，所以 $B^n$ 的计算非常方便，只需要将对角线的元素分别求 $n$ 次方。
这样就可以简化矩阵 $A$ 的幂次的计算。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{插图}

每过五年的状态变化示意图。因为有繁殖率，所以这个不是马尔可夫链的状态转移概率图。

\begin{center}
%\begin{tikzpicture}[auto]

\begin{tikzpicture}[
>={Stealth[length=3mm,width=3mm]}, % 设置更大的箭头尺寸
shorten >= 1pt, % 短化起点，防止箭头与节点重合
auto,
node distance=3cm,
thick,
main node/.style={circle,draw,font=\sffamily\Large\bfseries}
]


\node [circle,draw] (a) at (0,0) {0-5岁}; 
\node [circle,draw] (b) at (4,0) {5-10岁}; 
\node [circle,draw] (c) at (8,0) {10-15岁}; 
\node [circle,draw] (d) at (4,-4) {D}; 

%\graph {(a) -- (b)};
%\graph {(a) -- (c)};
%\graph {(b) -- (c)};

\path[->] (a) edge[] node[left] {0.5} (b);
\path[->] (b) edge[bend left] node[right] {4} (a);

\path[->] (b) edge[] node[left] {0.25} (c);
\path[->] (c) edge[bend right] node[right] {3} (a);
\path[->] (c) edge[] node[right] {1} (d);
\path[->] (a) edge[] node[right] {0.5} (d);
\path[->] (b) edge[] node[right] {0.75} (d);


\end{tikzpicture}

\end{center}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{编程计算}
首先载入数值计算模块和函数画图模块。
\begin{python}
import numpy as np
import matplotlib.pyplot as plt
\end{python}

设置初始值、繁殖率和存活率。
\begin{python}
x0=np.array([500,1000,500])
A=np.array([[0,5,4],[0.5,0,0],[0,0.25,0]])
\end{python}

我们考虑10次迭代，即50年的时间。先设置一个3乘11的全零矩阵，用于存放三个年龄组在不同年份的数量。
\begin{python}
N=10
x=np.zeros([3,N+1],dtype=int)
x[0,0]=500
x[1,0]=1000
x[2,0]=500
\end{python}

按照繁殖率和存活率，进行一代代的计算。这里我们没有使用矩阵对角化的方法。
\begin{python}
for t in range(N):
    x[0,t+1] = x[1,t]*4 + x[2,t]*3
    x[1,t+1] = x[0,t]*0.5
    x[2,t+1] = x[1,t]*0.25
\end{python}

输出第50年的时候，三个年龄组的种群数量。
\begin{python}
T=N*5
print('The population of the year %d is: '%T)
print(x[0,N],x[1,N],x[2,N])
\end{python}

画出0-50年中，三个年龄组的种群数量的变化情况。
\begin{python}
tt=np.linspace(start=0,stop=T,num=N+1)
plt.plot(tt,x[0,:],'bo-',label='0-5 years old')
plt.plot(tt,x[1,:],'go-',label='5-10 years old')
plt.plot(tt,x[2,:],'ro-',label='10-15 years old')
plt.legend(loc='upper left')
\end{python}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{回答问题}
第一组的数量增长很快，第二组的数量也稳步增长，第三组的数量比较平缓地增长。
在第50年的时候，三组的数量分别为 96575, 51007 和 4907. 
三个年龄组的数量随时间的变化如图。
\begin{center}
\includegraphics [height=5cm, width=10cm]{leslie_population_three_groups.png}
\end{center}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{练习题}

\begin{enumerate}\itemsep0.5em 

\item  在某国家，每年有比例为$p$ 的农村居民移居城镇，有比例为 $q$ 的城镇居民移居农村。
假设该国总人数不变，且上述人口迁移的规律也不变。
设$n$ 年后的农村人口和城镇人口占总人口的比例分别为 $x_n$ 和 $y_n$, 则有 $x_n+y_n=1$. 
\begin{enumerate}
\item  求关系式 $\begin{bmatrix} x_{n+1} \\ y_{n+1} \end{bmatrix} = A \begin{bmatrix} x_{n} \\ y_{n} \end{bmatrix}$ 中的矩阵 $A$. 
\item  设目前农村人口与城镇人口相等。求通项 $(x_n,y_n)$, 以及长期趋势。
\end{enumerate}


\end{enumerate} 



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\section{参考文献 }
\begin{thebibliography}{99}
\bibitem{sishoukui-2} 司守奎,孙玺菁. \emph{Python数学建模算法与应用}, 国防工业出版社. 2022年1月第1版. 
\bibitem{leslie} P. H. Leslie. \emph{On the use of matrices in certain population mathematics}, Biometrika, 1945 (33): 213-245. 
\bibitem{leslie-encyclopedia} Leslie matrix, Encyclopedia of Mathematics, \\ 
\url{https://encyclopediaofmath.org/wiki/Leslie_matrix}. 

\end{thebibliography}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


